www.gusucode.com > WSTMall PHP网店系统 v1.6.0PHP源码程序 > WSTMall PHP网店系统 v1.6.0/wstmall_v1.6.0_160506/wstmall_v1.6.0_160506/Upgrade/Upgrade/Apps/Home/Model/OrderSettlementsModel.class.php

    <?php
namespace Home\Model;
/**
 * ============================================================================
 * WSTMall开源商城
 * 官网地址:http://www.wstmall.com 
 * 联系QQ:707563272
 * ============================================================================
 * 订单结算服务类
 */
class OrderSettlementsModel extends BaseModel {
	/**
	 * 获取结算列表
	 */
	public function querySettlementsByPage(){
		$settlementNo = WSTAddslashes(I('settlementNo',-1));
		$isFinish = (int)I('isFinish');
		$sql = "select * from __PREFIX__order_settlements where 1=1 ";
		if($settlementNo!='')$sql.=" and  settlementNo like '%".$settlementNo."%'";
		if($isFinish>-1)$sql.=" and isFinish=".$isFinish;
		$sql.=" order by settlementId desc";
		return  $this->pageQuery($sql,(int)I('p'),30);
	}
    /**
	  * 获取未结算列表[在线付款 && 用户已收货]
	  */
	public function queryUnSettlementOrdersByPage(){
		$shopId = (int)session('WST_USER.shopId');
		$orderNo = WSTAddslashes(I('orderNo'));
		$userName = WSTAddslashes(I('userName'));
		$sql = "SELECT orderNo,orderId,userName,totalMoney,deliverMoney,realTotalMoney,poundageRate,poundageMoney,createTime FROM __PREFIX__orders o 
		    WHERE o.settlementId=0 and o.orderStatus=4 and o.payType=1 and o.shopId = $shopId ";
		if($orderNo!='')$sql.=" and o.orderNo like '%".$orderNo."%'";
		if($userName!='')$sql.=" and o.userName like '%".$userName."%'";
		$sql.=" order by o.orderId desc";
		return  $this->pageQuery($sql,(int)I('p'),30);
	}
	/**
	 * 获取已结算订单列表
	 */
	public function querySettlementsOrdersByPage(){
		$shopId = (int)session('WST_USER.shopId');
		$orderNo = WSTAddslashes(I('orderNo'));
		$settlementNo = WSTAddslashes(I('settlementNo',-1));
		$isFinish = (int)I('isFinish');
		$sql = "SELECT o.orderNo,o.orderId,o.userName,o.totalMoney,o.deliverMoney,o.realTotalMoney,os.settlementMoney,o.poundageRate,o.poundageMoney,o.createTime,os.settlementNo ,os.finishTime
		    FROM __PREFIX__orders o ,__PREFIX__order_settlements os
		    WHERE os.settlementId=o.settlementId and  o.settlementId>0 and o.orderStatus=4 and o.payType=1 and o.shopId = $shopId ";
		if($orderNo!='')$sql.=" and o.orderNo like '%".$orderNo."%'";
		if($settlementNo!='')$sql.=" and  os.settlementNo like '%".$settlementNo."%'";
		if($isFinish>-1)$sql.=" and os.isFinish=".$isFinish;
		$sql.=" order by o.settlementId desc";
		return  $this->pageQuery($sql,(int)I('p'),30);
	}
	/**
	 * 申请结算
	 */
	public function settlement(){
		$shopId = (int)session('WST_USER.shopId');
		$ids = WSTFormatIn(",", I('ids'));
		$sql = "select bankName,bankNo,bankUserName from __PREFIX__shops s 
		        left join __PREFIX__banks b on b.bankId=s.bankId where s.shopId=".$shopId;
		$accRs = $this->queryRow($sql);
		if(empty($accRs))return array('status'=>-1,'msg'=>'无效的结算账户!');
		$sql = "select orderId,orderNo,totalMoney,deliverMoney,realTotalMoney,poundageMoney from __PREFIX__orders where shopId=".$shopId." and orderId in(".$ids.") and settlementId=0 and orderStatus=4 and payType=1";
		$rs = $this->query($sql);
		if(empty($rs))return array('status'=>-1,'msg'=>'申请结算失败,请核对订单状态是否已申请结算了!');
		$orderMoney = 0;
		$settlementMoney = 0;
		$poundageMoney = 0;
		foreach ($rs as $key =>$v){
			$orderMoney += $v['totalMoney']+$v['deliverMoney'];
			$settlementMoney +=($v['totalMoney']+$v['deliverMoney']-$v['poundageMoney']);
			$poundageMoney+=$v['poundageMoney'];
		}
		$settlementStartMoney = floatval($GLOBALS['CONFIG']['settlementStartMoney']);
		if($settlementStartMoney>$orderMoney)return array('status'=>-1,'msg'=>'结算总金额必须大于'.$settlementStartMoney."才能申请结算!");
		//建立结算记录
		$data = array();
		$data['settlementType'] = 0;
		$data['shopId'] = $shopId;
		$data['accName'] = $accRs['bankName'];
		$data['accNo'] = $accRs['bankNo'];
		$data['accUser'] = $accRs['bankUserName'];
		$data['createTime'] = date('Y-m-d H:i:s');
		$data['orderMoney'] = $orderMoney;
		$data['settlementMoney'] = $settlementMoney;
		$data['poundageMoney'] = $poundageMoney;
		$data['isFinish'] = 0;
		$settlementId = M('order_settlements')->add($data);
		if(false !== $settlementId){
			$sql = "update __PREFIX__order_settlements set settlementNo='".date('y').sprintf("%08d", $settlementId)."' where settlementId=".$settlementId;
			$this->execute($sql);
			foreach ($rs as $key =>$v){
				$sql = "update __PREFIX__orders set settlementId=".$settlementId." where orderId=".$v['orderId'];
				$this->execute($sql);
			}
			return array('status'=>1);
		}
		return array('status'=>1,'msg'=>'申请结算失败,请与管理员联系。');
	}
    
}